#ifndef GENOBOTS_H_INCLUDED
#define GENOBOTS_H_INCLUDED

#include <vector>
#include "bot.h"
#include "settings.h"
using namespace std;

class GenoBots {
  public:
    // functions
    GenoBots(int r, int c);
    void  AddBot(int theRow, int theColumn, wxInt32 stic, superBot *sbot);
    void  ChangedAll();
    void  ChangedNone();
    void  Clear();
    void  DeleteBot(int theRow, int theColumn);
    bool  EmptySpots();
    void  Evolve(wxInt32 tic);
    int   GetBotCount();
    int   GetColumns();
    int   GetRows();
    void  Mutate(wxInt32 tic, wxInt32 i, wxInt32 j);
    bool  NextTic(pair<int, int> & selected, wxInt32 tic);
    void  Randomize(wxInt32 stic);
    int   Repair(int value, int commandType, int param, int size);
    void  SetBotsRandom(wxInt32 stic);
    void  SetFoodRandom();
    void  SetRows(wxInt32 newRows);
    void  SetColumns(wxInt32 newColumns);
    // variables
    vector< vector<bot* > > bots;
    vector< vector<bool> >  changed;
    vector< vector<bool> >  food;
    vector<superBot* >      superBots;
    settings                *theSettings;
  private:
    int botCount;
    int rows;
    int columns;
};

#endif // GENOBOTS_H_INCLUDED
